package com.qianli.cashmama.product.facade.result;

import com.qianli.cashmama.product.facade.enums.InterestStrategyEnum;
import com.qianli.cashmama.product.facade.enums.PaybackPeriodUnitEnum;
import com.qianli.cashmama.product.facade.enums.SellStatusEnum;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * Created by xuyang on 2017/7/20.
 */
public class ProductCategory implements Serializable {

    private static final long serialVersionUID = -3906875868889762387L;

    //类目代码
    private String code;

    //类目名称
    private String name;

    //类目金额下限, 用于创建类目时进行检查
    private String moneyFloor;

    //类目金额上限, 用于创建类目时进行检查
    private String moneyUpper;

    //每档金额，用于创建类目时进行检查
    private String moneyStep;

    //是否上架
    /**
     * @see SellStatusEnum
     */
    private Integer isSelling;

    //计息方式
    /**
     * @see InterestStrategyEnum
     */
    private String interestStrategy;

    //还款周期单位
    /**
     * @see PaybackPeriodUnitEnum
     */
    private String paybackPeriodUnit;

    //还款周期下限，用于创建类目时进行检查
    private Integer paybackPeriodFloor;

    //还款周期上限，用于创建类目时进行检查
    private Integer paybackPeriodUpper;

    //每档还款周期，用于创建类目时进行检查
    private Integer paybackPeriodStep;

    //类目的产品规则
    private List<ProductRuleDetail> productRules;

    private Integer sort;
    /**
     * 商户号
     */
    private String merchantCode;
    /**
     * 产品类目配置
     */
    private CategoryConfig categoryConfig;

    /**
     * 类目logo
     */
    private String logo;
    /**
     * 类目描述
     */
    private String categoryDesc;
    /**
     * 类目类型
     */
    private Integer categoryType;
    /**
     * 申请比例
     */
    private Integer applyRate;
    /**
     *每日申请上限
     */
    private Integer dailyApplyLimit;
    /**
     *生效开始时间
     */
    private Date effectiveStartTime;
    /**
     *生效结束时间
     */
    private Date effectiveEndTime;
    /**
     *商户域名
     */
    private String merchantDoaminUrl;
    /**
     *商户公钥
     */
    private String merchantPublicKey;
    /**
     * 确认提现步骤
     */
    private Integer confirmWithdrawProcess;

    private String extraInfo;

    private Integer forGp;

    public Integer getForGp() {
        return forGp;
    }

    public ProductCategory setForGp(Integer forGp) {
        this.forGp = forGp;
        return this;
    }

    public String getExtraInfo() {
        return extraInfo;
    }

    public ProductCategory setExtraInfo(String extraInfo) {
        this.extraInfo = extraInfo;
        return this;
    }

    public Integer getConfirmWithdrawProcess() {
        return confirmWithdrawProcess;
    }

    public ProductCategory setConfirmWithdrawProcess(Integer confirmWithdrawProcess) {
        this.confirmWithdrawProcess = confirmWithdrawProcess;
        return this;
    }

    public Integer getCategoryType() {
        return categoryType;
    }

    public ProductCategory setCategoryType(Integer categoryType) {
        this.categoryType = categoryType;
        return this;
    }

    public Integer getApplyRate() {
        return applyRate;
    }

    public ProductCategory setApplyRate(Integer applyRate) {
        this.applyRate = applyRate;
        return this;
    }

    public String getCategoryDesc() {
        return categoryDesc;
    }

    public ProductCategory setCategoryDesc(String categoryDesc) {
        this.categoryDesc = categoryDesc;
        return this;
    }

    public String getLogo() {
        return logo;
    }

    public ProductCategory setLogo(String logo) {
        this.logo = logo;
        return this;
    }

    public String getMerchantCode() {
        return merchantCode;
    }

    public ProductCategory setMerchantCode(String merchantCode) {
        this.merchantCode = merchantCode;
        return this;
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public String getCode() {
        return code;
    }

    public ProductCategory setCode(String code) {
        this.code = code;
        return this;
    }

    public String getName() {
        return name;
    }

    public ProductCategory setName(String name) {
        this.name = name;
        return this;
    }

    public String getMoneyFloor() {
        return moneyFloor;
    }

    public ProductCategory setMoneyFloor(String moneyFloor) {
        this.moneyFloor = moneyFloor;
        return this;
    }

    public String getMoneyUpper() {
        return moneyUpper;
    }

    public ProductCategory setMoneyUpper(String moneyUpper) {
        this.moneyUpper = moneyUpper;
        return this;
    }

    public String getMoneyStep() {
        return moneyStep;
    }

    public ProductCategory setMoneyStep(String moneyStep) {
        this.moneyStep = moneyStep;
        return this;
    }

    public Integer getIsSelling() {
        return isSelling;
    }

    public ProductCategory setIsSelling(Integer isSelling) {
        this.isSelling = isSelling;
        return this;
    }

    public String getInterestStrategy() {
        return interestStrategy;
    }

    public ProductCategory setInterestStrategy(String interestStrategy) {
        this.interestStrategy = interestStrategy;
        return this;
    }

    public String getPaybackPeriodUnit() {
        return paybackPeriodUnit;
    }

    public ProductCategory setPaybackPeriodUnit(String paybackPeriodUnit) {
        this.paybackPeriodUnit = paybackPeriodUnit;
        return this;
    }

    public Integer getPaybackPeriodFloor() {
        return paybackPeriodFloor;
    }

    public ProductCategory setPaybackPeriodFloor(Integer paybackPeriodFloor) {
        this.paybackPeriodFloor = paybackPeriodFloor;
        return this;
    }

    public Integer getPaybackPeriodUpper() {
        return paybackPeriodUpper;
    }

    public ProductCategory setPaybackPeriodUpper(Integer paybackPeriodUpper) {
        this.paybackPeriodUpper = paybackPeriodUpper;
        return this;
    }

    public Integer getPaybackPeriodStep() {
        return paybackPeriodStep;
    }

    public ProductCategory setPaybackPeriodStep(Integer paybackPeriodStep) {
        this.paybackPeriodStep = paybackPeriodStep;
        return this;
    }

    public List<ProductRuleDetail> getProductRules() {
        return productRules;
    }

    public ProductCategory setProductRules(List<ProductRuleDetail> productRules) {
        this.productRules = productRules;
        return this;
    }

    public CategoryConfig getCategoryConfig() {
        return categoryConfig;
    }

    public ProductCategory setCategoryConfig(CategoryConfig categoryConfig) {
        this.categoryConfig = categoryConfig;
        return this;
    }

    public Integer getDailyApplyLimit() {
        return dailyApplyLimit;
    }

    public ProductCategory setDailyApplyLimit(Integer dailyApplyLimit) {
        this.dailyApplyLimit = dailyApplyLimit;
        return this;
    }

    public Date getEffectiveStartTime() {
        return effectiveStartTime;
    }

    public ProductCategory setEffectiveStartTime(Date effectiveStartTime) {
        this.effectiveStartTime = effectiveStartTime;
        return this;
    }

    public Date getEffectiveEndTime() {
        return effectiveEndTime;
    }

    public ProductCategory setEffectiveEndTime(Date effectiveEndTime) {
        this.effectiveEndTime = effectiveEndTime;
        return this;
    }

    public String getMerchantDoaminUrl() {
        return merchantDoaminUrl;
    }

    public ProductCategory setMerchantDoaminUrl(String merchantDoaminUrl) {
        this.merchantDoaminUrl = merchantDoaminUrl;
        return this;
    }

    public String getMerchantPublicKey() {
        return merchantPublicKey;
    }

    public ProductCategory setMerchantPublicKey(String merchantPublicKey) {
        this.merchantPublicKey = merchantPublicKey;
        return this;
    }
}
